package co.com.sewebpoint.dao;

import java.util.List;

import co.com.sewebpoint.exception.DaoExceptionSE;
import co.com.sewebpoint.model.Solicitud;
import co.com.sewebpoint.model.Usuario;

/***
 * 
 * @author  Sara Tamayo - Esteban Hurtado
 * @version 1.0
 * 
 * Interfaz de DAO para la tabla Usuario provee todos los posibles metodos
 *
 */

public interface UsuarioDAO {
	
	
	
	
	/**
	 * Metodo que inserta un Usuario en la base de datos 
	 * @param  usuario a insertar
	 * @return Usuario Insertado
	 * @throws DaoExceptionSE Ocurre algun error en la conexion a la base de datos
	 *
	 */
	
	public Usuario insert(Usuario usuario) throws DaoExceptionSE;
	
	
	
	/**
	 * Metodo que modifica los valores del Usuario dependiendo de un usuario enviado
	 * @param  usuario a modificar
	 * @return Usuario Modificado
	 * @throws DaoExceptionSE Ocurre algun error en la conexion a la base de datos
	 *
	 */
	
	public Usuario update(Usuario usuario) throws DaoExceptionSE;
	
	
	
	/**
	 * Metodo que elimina un Usuario del sistema
	 * @param  usuario a eliminar
	
	 * @throws DaoExceptionSE Ocurre algun error en la conexion a la base de datos
	 *
	 */
	
	public void delete(Usuario usuario) throws DaoExceptionSE;
	
	
	
	
	/**
	 * Metodo que retorna la lista de usuarios existentes en la base de datos 
	 * 
	 * @return Lista de los Usuarios retornadas de la base de datos
	 * @throws DaoExceptionSE Ocurre algun error en la conexion a la base de datos
	 *
	 */
	
	
	
	public List<Usuario> getAllItems() throws DaoExceptionSE;
	
	/**
	 * Metodo que retorna los datos de un Usuairo dado su clave primaria (usuario)
	 * 
	 * @param  usuario codigo del  usuario
	 * @return Usuario encontrado dado su codigo
	 * @throws DaoExceptionSE Ocurre algun error en la conexion a la base de datos
	 *
	 */
	
	public Usuario getKeyItem(String usuario) throws DaoExceptionSE;
	
	

}
